There are many known encoding techniques enabling the correction of transmission errors.
These error correction codes enable the correction of transmission errors inherent in every communications channel. Thus, they are widely used in the following fields:                the transmission of information by electrical wire telecommunication, as in ADSL standards, or optical communications, on optical fibers or in open space;        the transmission of information in wireless space and terrestrial radio communications, as in TNT digital television systems, DAB digital radio, GSM or UMTS telephony, WiFi radio networks and also in future communications systems such as future standards for DVB, 4G, LTE, “future Internet” or transmission between communicating vehicles, objects or machines etc;        the compression and decompression of information sources;        the generation and detection of sequences, known as scrambling, in CDMA systems;        the storage of information in magnetic, optical, mechanical or electrical mass memories to constitute hard disk drives or random access memories for computers, or USB interface memory sticks etc;        the correction of information during computation in an integrated circuit of a microprocessor or in a computer;        etc.        
These transmission errors are caused for example by the thermal noise of the electronic components of the receiver, electromagnetic scrambling (whether intentional or otherwise), echoes or multiple propagation in the case of wireless propagation or in an electrical energy network etc.
To enable the correction of these transmission errors, error correction codes enable the generation of redundancy data from source data.
Thus, an error correction code is classically defined by:                a length n, corresponding to the data output from the encoder (code word with a length n formed by k source data pieces and (n−k) redundancy data pieces),        a number of bits or symbols k of payload information, corresponding to the data at input of the encoder (also called source data), and        a minimum distance dmin.        
The minimum distance of a code dmin corresponds to the minimum distance between two code words. It makes it possible to determine the maximum number of errors that the code can correct in a code word.
The rate of the code is defined by R=k/n.
For example, a (8, 4, 4) Hamming code is a code with a length n=8, taking at input k=4 payload information symbols with a minimum distance dmin=4, and a rate of ½.
The very first studies on error correction codes data from the 1940's.
More recently, in the European patent EP 1 101 288, J. C. Carlach and C. Vervoux presented a new encoding scheme known as the “Cortex code”. These codes are well known to those skilled in the art and are based on the building of a code with efficient connection properties from simple small basic codes placed in parallel in a certain number of stages separated by permutations.
In general, one drawback of error correction codes having a length n and containing k payload information symbols lies in the fact that the minimum distance dmin is not optimal for these lengths n and k, i.e. the minimum distance is not the closest possible distance from an upper boundary for which the code enables the detection of the maximum number of errors.
Now the fact of having a minimum distance dmin that is the greatest possible minimum distance enables the detection of (dmin−1) erroneous symbols and the correction of └(dmin−1)/2┘ of these erroneous symbols (where the operator └.┘ designates the integer part).
Furthermore, for industrial-scale use, the optimizing of the error correction codes also includes the minimizing of encoding and decoding complexities in terms of costs of hardware and energy consumed.
Paradoxically, these problems of optimizing error correction codes are more difficult to deal with when the lengths n of the codes range from small to average, i.e. of the order of n<1000.
This is so because that the classic algorithm, called a belief propagation algorithm, or its variants, becomes increasingly sub-optimal as the length of the cycles diminishes.
A cycle is a closed path in a Tanner graph representing the constraints (+ and =) which must be fulfilled by the symbols of a word for this word to be a word of a code.
There is therefore a need for new error correction codes giving efficient results (i.e. a great minimum distance) such as the Cortex codes, and having short cycles.